package template;

import javax.swing.*;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

/**
 * Created by wujf on 2020/6/2.
 */
public class TextFieldInputListener implements CaretListener {

    @Override
    public void caretUpdate(CaretEvent e) {
        JTextField textField = (JTextField) e.getSource(); // 获得触发事件的 JTextField
        String text = textField.getText();
        if (text.length() == 0) {
            return;
        }
        char ch = text.charAt(text.length() - 1);
        if (!((ch >= '0' && ch <= '9')
                || (ch >= 'A' && ch <= 'z'))) { // 中文，最常用的范围是 U+4E00～U+9FA5，也有使用 U+4E00～ U+9FFF 的，但目前 U+9FA6～U+9FFF 之间的字符还属于空码，暂时还未定义，但不能保证以后不会被定义
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    // 去掉 JTextField 中的末尾字符
                    textField.setText(text.substring(0, text.length() - 1));
                }
            });
        }
    }
}
